/**
 *@desc: 工具类-处理表格排序
 *@author: ptt
 *@date 2023/12/18
 */
// 使用：import {tableSort} from '@/utils/sort.js';  const data = tableSort(tableData, key, 'up');
import $handleStr from './handleStr.js';

/**
 * @desc: 表格排序
 * @param: 1.表格数据【对象数组】  2.需要排序的字段【对象的键】 3.排序方式,降序还是升序【down,up】
 * @returns: 排完序的对象数组*/
export const tableSort = function (data, key, way) {
    // 数据处理：
    // 1.将数据分为有数据和无数据两种集合
    const noDataArr = [];
    const dataArr = [];
    data.map(item => {
        if (!$handleStr.hasValue(item[key])) {
            noDataArr.push(item);
        } else {
            dataArr.push(item);
        }
    });
    // 2.对有数据的集合进行排序
    const len = dataArr.length;
    let temp = '';
    for (let i = 0; i < len; i++) {
        for (let j = i + 1; j < len; j++) {
            // 升序
            if (
                way == 'up' &&
                $handleStr.toNum(dataArr[i][key]) >
                    $handleStr.toNum(dataArr[j][key])
            ) {
                temp = dataArr[i];
                dataArr[i] = dataArr[j];
                dataArr[j] = temp;
            }
            // 降序
            if (
                way == 'down' &&
                $handleStr.toNum(dataArr[i][key]) <
                    $handleStr.toNum(dataArr[j][key])
            ) {
                temp = dataArr[i];
                dataArr[i] = dataArr[j];
                dataArr[j] = temp;
            }
        }
    }

    // 3.按照当前排序去组装表格数据
    if (way == 'up') {
        data = [...noDataArr, ...dataArr];
    } else {
        data = [...dataArr, ...noDataArr];
    }
    // console.log('data', data, 'key', key, 'way', way);
    return data;
};
